package com.Stream;

import org.w3c.dom.ls.LSOutput;

import java.util.ArrayList;
import java.util.function.Consumer;
import java.util.stream.Stream;

public class StreamDemo02 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("李洛克");
        list.add("李洛克");
        list.add("李洛克");
        list.add("李连杰");
        list.add("李小龙");
        list.add("陈武林");
        list.add("张全蛋");
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("李洛克");
        list1.add("李洛克");
        list1.add("李洛克");
        list1.add("李连杰");
        //截取数据的个数
        list.stream().limit(3).forEach(s -> System.out.println(s));
        System.out.println("------");
        //和上面的相反,跳过参数输出后面的
        list.stream().skip(2).forEach(s -> System.out.println(s));
        System.out.println("------");
        //去除重复的元素
        list.stream().distinct().forEach(s -> System.out.println(s));
        System.out.println("-----");
        //两个流合并成为一个流
        Stream.concat(list.stream(), list1.stream()).forEach(s -> System.out.println(s));


        list.stream().forEach(new Consumer<String>() {
            //forEach方法的低层会循环获取流中的每一个数据
            //并循环调用accept方法,并把每一个数据传递给accept方法
            //s就是每一个流中是数据
            //使用只要在accept上面写上代码逻辑就可以了
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });
        System.out.println("=========");

        //lambda的简化格式
        list.stream().forEach(s -> System.out.println(s));
    }
}
